﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;
using YaAppoint.Appointments.Pools;
using YaAppoint.ExamAppies;
using YaAppoint.Response;

namespace YaAppoint.Appointments.AutoAppoint
{
    [RemoteService(isEnabled:false)]
    public interface IAutoAppointAppService:IApplicationService
    {
        // API自动预约
        Task<BackJson> Appoint(string applyNumbers,bool needPage);

        /// <summary>
        /// 自动预约，生成预约方案
        /// </summary>
        /// <param name="dtApplyList"></param>
        /// <returns></returns>
        Task<AppointResult> GenerateSolution(List<ExamApplicationDto> applyItems,bool needPage);

        /// <summary>
        /// 获取推荐号池
        /// </summary>
        /// <param name="applyItems"></param>
        /// <param name="appointedApplyItems"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        Task<List<PoolDto>> GetSuggestedPools(List<ExamApplicationDto> applyItems, DateTime date);

        /// <summary>
        /// 获取申请项目列表
        /// (自动预约创建后，此时AppointmentStatus 为 UnConfirmed ,等待医生的确认)
        /// </summary>
        Task<BackJson> GetApplyItems(string applyNumberList);

        /// <summary>
        /// 获取打印信息
        /// </summary>
        /// <param name="applyNumber">申请单号，以英文逗号隔开','</param>
        /// <returns></returns>
       
    }
}
